#ifndef APPLICATION_H_
#define APPLICATION_H_

#include <string>
#include "gui/GUIApplication.h"
#include "util/exceptions/Exception.h"
#include "util/logger/Logger.h"
#include "util/HashMap.h"

namespace app {

/*
 * Clase que representa la aplicacion corriendose.
 */
class Application {
public:

	/* Constructor */
	Application(std::string configPath = "res");

	/* Destructor */
	virtual ~Application();

	/* Corre la aplicacion. */
	virtual void run(util::HashMap<std::string, std::string>* parameterMap) throw (util::Exception);

private:

	void fillMissingParametersFromConfig(util::HashMap<std::string, std::string>* parameters);

	util::Logger* logger();

	gui::GUIApplication* guiApp;

};

}

#endif /* APPLICATION_H_ */
